//auto gen by paipai.java.augogen ver 3.0.0
//author skyzhuang
//source idl: com.erp.employee.ao.idl.AddEmployeeReq.java


#ifndef ERP_EMPLOYEE_PO_CEMPLOYEEPO_BY_AUTOGEN_V5_H
#define ERP_EMPLOYEE_PO_CEMPLOYEEPO_BY_AUTOGEN_V5_H


#include "app_platform/intf_serializable.h"
#include <bitset>
#include <string>
#include <sstream>
#include <iostream>


namespace erp
{
namespace employee
{
namespace po
{


class CEmployeePo : public ISerializable
{
	public:
		std::string m_sLastErrMsg;///<错误信息

		/**
		 *  版本号   
		 *
		 * 版本 >= 0
		 */
		uint32_t dwVersion;

		/**
		 * cVersion_u uflag field
		 */
		uint8_t cVersion_u; //optional flag

		/**
		 *  员工ID 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwEmployeeId;

		/**
		 * cEmployeeId_u uflag field
		 */
		uint8_t cEmployeeId_u; //optional flag

		/**
		 *  员工姓名 
		 *
		 * 版本 >= 0
		 */
		std::string strEmployeeName;

		/**
		 * cEmployeeName_u uflag field
		 */
		uint8_t cEmployeeName_u; //optional flag

		/**
		 *  员工英文名 
		 *
		 * 版本 >= 0
		 */
		std::string strEmployeeEnglishName;

		/**
		 * cEmployeeEnglishName_u uflag field
		 */
		uint8_t cEmployeeEnglishName_u; //optional flag

		/**
		 *  员工状态
		 *
		 * 版本 >= 0
		 */
		uint16_t wEmployeeStatus;

		/**
		 * cEmployeeStatus_u uflag field
		 */
		uint8_t cEmployeeStatus_u; //optional flag

		/**
		 *  员工属性  
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetEmployeeProperty;

		/**
		 * cEmployeeProperty_u uflag field
		 */
		uint8_t cEmployeeProperty_u; //optional flag

		/**
		 *  员工属性，设置  
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetEmployeePropertyInclude;

		/**
		 * cEmployeePropertyInclude_u uflag field
		 */
		uint8_t cEmployeePropertyInclude_u; //optional flag

		/**
		 *  员工属性，取消 
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetEmployeePropertyExclude;

		/**
		 * cEmployeePropertyExclude_u uflag field
		 */
		uint8_t cEmployeePropertyExclude_u; //optional flag

		/**
		 *  员工类型
		 *
		 * 版本 >= 0
		 */
		uint16_t wEmployeeType;

		/**
		 * cEmployeeType_u uflag field
		 */
		uint8_t cEmployeeType_u; //optional flag

		/**
		 *  员工性别
		 *
		 * 版本 >= 0
		 */
		uint8_t cEmployeeSex;

		/**
		 * cEmployeeSex_u uflag field
		 */
		uint8_t cEmployeeSex_u; //optional flag

		/**
		 *  添加时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwAddTime;

		/**
		 * cAddTime_u uflag field
		 */
		uint8_t cAddTime_u; //optional flag

		/**
		 *  修改时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwLastUpdatetime;

		/**
		 * cLastUpdatetime_u uflag field
		 */
		uint8_t cLastUpdatetime_u; //optional flag




	public:
		CEmployeePo():
		dwVersion(0),
		cVersion_u(0),
		dwEmployeeId(0),
		cEmployeeId_u(0),
		cEmployeeName_u(0),
		cEmployeeEnglishName_u(0),
		wEmployeeStatus(0),
		cEmployeeStatus_u(0),
		cEmployeeProperty_u(0),
		cEmployeePropertyInclude_u(0),
		cEmployeePropertyExclude_u(0),
		wEmployeeType(0),
		cEmployeeType_u(0),
		cEmployeeSex(0),
		cEmployeeSex_u(0),
		dwAddTime(0),
		cAddTime_u(0),
		dwLastUpdatetime(0),
		cLastUpdatetime_u(0) {}
				CEmployeePo& operator = (const CEmployeePo& obj){

			this->dwVersion = obj.dwVersion;
			this->dwEmployeeId = obj.dwEmployeeId;
			this->strEmployeeName = obj.strEmployeeName;
			this->strEmployeeEnglishName = obj.strEmployeeEnglishName;
			this->wEmployeeStatus = obj.wEmployeeStatus;
			this->bitsetEmployeeProperty = obj.bitsetEmployeeProperty;
			this->bitsetEmployeePropertyInclude = obj.bitsetEmployeePropertyInclude;
			this->bitsetEmployeePropertyExclude = obj.bitsetEmployeePropertyExclude;
			this->wEmployeeType = obj.wEmployeeType;
			this->cEmployeeSex = obj.cEmployeeSex;
			this->dwAddTime = obj.dwAddTime;
			this->dwLastUpdatetime = obj.dwLastUpdatetime;
			this->cVersion_u = obj.cVersion_u;
			this->cEmployeeId_u = obj.cEmployeeId_u;
			this->cEmployeeName_u = obj.cEmployeeName_u;
			this->cEmployeeEnglishName_u = obj.cEmployeeEnglishName_u;
			this->cEmployeeStatus_u = obj.cEmployeeStatus_u;
			this->cEmployeeProperty_u = obj.cEmployeeProperty_u;
			this->cEmployeePropertyInclude_u = obj.cEmployeePropertyInclude_u;
			this->cEmployeePropertyExclude_u = obj.cEmployeePropertyExclude_u;
			this->cEmployeeType_u = obj.cEmployeeType_u;
			this->cEmployeeSex_u = obj.cEmployeeSex_u;
			this->cAddTime_u = obj.cAddTime_u;
			this->cLastUpdatetime_u = obj.cLastUpdatetime_u;
			return *this;
		}

	public:


		/**
		 * 是否设置 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 bool  IsVersionSet() const{
				 return  cVersion_u != 0;
		}


		/**
		 * 获取uflag 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 const uint8_t   GetVersionUFlag() const{
				 return  cVersion_u;
		}


		/**
		 * 设置 版本号   
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 void  SetVersion( const uint32_t& sVal, uint8_t cUFlag=1){
				dwVersion = sVal;
				cVersion_u = cUFlag;
		}


		/**
		 * 获取 版本号   
		 * 
		 * @return dwVersion value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetVersion() const {
				return dwVersion;
		}


		/**
		 * 是否设置 员工ID 了
		 * 
		 * @param uint32_t:dwEmployeeId
		 *  
		 * 
		 */
		 bool  IsEmployeeIdSet() const{
				 return  cEmployeeId_u != 0;
		}


		/**
		 * 获取uflag 员工ID 了
		 * 
		 * @param uint32_t:dwEmployeeId
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeIdUFlag() const{
				 return  cEmployeeId_u;
		}


		/**
		 * 设置 员工ID 
		 * 
		 * @param uint32_t:dwEmployeeId
		 *  
		 * 
		 */
		 void  SetEmployeeId( const uint32_t& sVal, uint8_t cUFlag=1){
				dwEmployeeId = sVal;
				cEmployeeId_u = cUFlag;
		}


		/**
		 * 获取 员工ID 
		 * 
		 * @return dwEmployeeId value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetEmployeeId() const {
				return dwEmployeeId;
		}


		/**
		 * 是否设置 员工姓名 了
		 * 
		 * @param std::string:strEmployeeName
		 *  
		 * 
		 */
		 bool  IsEmployeeNameSet() const{
				 return  cEmployeeName_u != 0;
		}


		/**
		 * 获取uflag 员工姓名 了
		 * 
		 * @param std::string:strEmployeeName
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeNameUFlag() const{
				 return  cEmployeeName_u;
		}


		/**
		 * 设置 员工姓名 
		 * 
		 * @param std::string:strEmployeeName
		 *  
		 * 
		 */
		 void  SetEmployeeName( const std::string& sVal, uint8_t cUFlag=1){
				strEmployeeName = sVal;
				cEmployeeName_u = cUFlag;
		}


		/**
		 * 获取 员工姓名 
		 * 
		 * @return strEmployeeName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetEmployeeName() const {
				return strEmployeeName;
		}


		/**
		 * 获取 员工姓名 
		 * 
		 * @return strEmployeeName value 类型为:std::string
		 * 
		 */
		 std::string&  GetEmployeeName() {
				return strEmployeeName;
		}


		/**
		 * 是否设置 员工英文名 了
		 * 
		 * @param std::string:strEmployeeEnglishName
		 *  
		 * 
		 */
		 bool  IsEmployeeEnglishNameSet() const{
				 return  cEmployeeEnglishName_u != 0;
		}


		/**
		 * 获取uflag 员工英文名 了
		 * 
		 * @param std::string:strEmployeeEnglishName
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeEnglishNameUFlag() const{
				 return  cEmployeeEnglishName_u;
		}


		/**
		 * 设置 员工英文名 
		 * 
		 * @param std::string:strEmployeeEnglishName
		 *  
		 * 
		 */
		 void  SetEmployeeEnglishName( const std::string& sVal, uint8_t cUFlag=1){
				strEmployeeEnglishName = sVal;
				cEmployeeEnglishName_u = cUFlag;
		}


		/**
		 * 获取 员工英文名 
		 * 
		 * @return strEmployeeEnglishName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetEmployeeEnglishName() const {
				return strEmployeeEnglishName;
		}


		/**
		 * 获取 员工英文名 
		 * 
		 * @return strEmployeeEnglishName value 类型为:std::string
		 * 
		 */
		 std::string&  GetEmployeeEnglishName() {
				return strEmployeeEnglishName;
		}


		/**
		 * 是否设置 员工状态了
		 * 
		 * @param uint16_t:wEmployeeStatus
		 *  
		 * 
		 */
		 bool  IsEmployeeStatusSet() const{
				 return  cEmployeeStatus_u != 0;
		}


		/**
		 * 获取uflag 员工状态了
		 * 
		 * @param uint16_t:wEmployeeStatus
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeStatusUFlag() const{
				 return  cEmployeeStatus_u;
		}


		/**
		 * 设置 员工状态
		 * 
		 * @param uint16_t:wEmployeeStatus
		 *  
		 * 
		 */
		 void  SetEmployeeStatus( const uint16_t& sVal, uint8_t cUFlag=1){
				wEmployeeStatus = sVal;
				cEmployeeStatus_u = cUFlag;
		}


		/**
		 * 获取 员工状态
		 * 
		 * @return wEmployeeStatus value 类型为:uint16_t
		 * 
		 */
		 const uint16_t&  GetEmployeeStatus() const {
				return wEmployeeStatus;
		}


		/**
		 * 是否设置 员工属性  了
		 * 
		 * @param std::bitset<32> :bitsetEmployeeProperty
		 *  
		 * 
		 */
		 bool  IsEmployeePropertySet() const{
				 return  cEmployeeProperty_u != 0;
		}


		/**
		 * 获取uflag 员工属性  了
		 * 
		 * @param std::bitset<32> :bitsetEmployeeProperty
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeePropertyUFlag() const{
				 return  cEmployeeProperty_u;
		}


		/**
		 * 设置 员工属性  
		 * 
		 * @param std::bitset<32> :bitsetEmployeeProperty
		 *  
		 * 
		 */
		 void  SetEmployeeProperty( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetEmployeeProperty = sVal;
				cEmployeeProperty_u = cUFlag;
		}


		/**
		 * 获取 员工属性  
		 * 
		 * @return bitsetEmployeeProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetEmployeeProperty() const {
				return bitsetEmployeeProperty;
		}


		/**
		 * 获取 员工属性  
		 * 
		 * @return bitsetEmployeeProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetEmployeeProperty() {
				return bitsetEmployeeProperty;
		}


		/**
		 * 是否设置 员工属性，设置  了
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyInclude
		 *  
		 * 
		 */
		 bool  IsEmployeePropertyIncludeSet() const{
				 return  cEmployeePropertyInclude_u != 0;
		}


		/**
		 * 获取uflag 员工属性，设置  了
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyInclude
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeePropertyIncludeUFlag() const{
				 return  cEmployeePropertyInclude_u;
		}


		/**
		 * 设置 员工属性，设置  
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyInclude
		 *  
		 * 
		 */
		 void  SetEmployeePropertyInclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetEmployeePropertyInclude = sVal;
				cEmployeePropertyInclude_u = cUFlag;
		}


		/**
		 * 获取 员工属性，设置  
		 * 
		 * @return bitsetEmployeePropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetEmployeePropertyInclude() const {
				return bitsetEmployeePropertyInclude;
		}


		/**
		 * 获取 员工属性，设置  
		 * 
		 * @return bitsetEmployeePropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetEmployeePropertyInclude() {
				return bitsetEmployeePropertyInclude;
		}


		/**
		 * 是否设置 员工属性，取消 了
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyExclude
		 *  
		 * 
		 */
		 bool  IsEmployeePropertyExcludeSet() const{
				 return  cEmployeePropertyExclude_u != 0;
		}


		/**
		 * 获取uflag 员工属性，取消 了
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyExclude
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeePropertyExcludeUFlag() const{
				 return  cEmployeePropertyExclude_u;
		}


		/**
		 * 设置 员工属性，取消 
		 * 
		 * @param std::bitset<32> :bitsetEmployeePropertyExclude
		 *  
		 * 
		 */
		 void  SetEmployeePropertyExclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetEmployeePropertyExclude = sVal;
				cEmployeePropertyExclude_u = cUFlag;
		}


		/**
		 * 获取 员工属性，取消 
		 * 
		 * @return bitsetEmployeePropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetEmployeePropertyExclude() const {
				return bitsetEmployeePropertyExclude;
		}


		/**
		 * 获取 员工属性，取消 
		 * 
		 * @return bitsetEmployeePropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetEmployeePropertyExclude() {
				return bitsetEmployeePropertyExclude;
		}


		/**
		 * 是否设置 员工类型了
		 * 
		 * @param uint16_t:wEmployeeType
		 *  
		 * 
		 */
		 bool  IsEmployeeTypeSet() const{
				 return  cEmployeeType_u != 0;
		}


		/**
		 * 获取uflag 员工类型了
		 * 
		 * @param uint16_t:wEmployeeType
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeTypeUFlag() const{
				 return  cEmployeeType_u;
		}


		/**
		 * 设置 员工类型
		 * 
		 * @param uint16_t:wEmployeeType
		 *  
		 * 
		 */
		 void  SetEmployeeType( const uint16_t& sVal, uint8_t cUFlag=1){
				wEmployeeType = sVal;
				cEmployeeType_u = cUFlag;
		}


		/**
		 * 获取 员工类型
		 * 
		 * @return wEmployeeType value 类型为:uint16_t
		 * 
		 */
		 const uint16_t&  GetEmployeeType() const {
				return wEmployeeType;
		}


		/**
		 * 是否设置 员工性别了
		 * 
		 * @param uint8_t:cEmployeeSex
		 *  
		 * 
		 */
		 bool  IsEmployeeSexSet() const{
				 return  cEmployeeSex_u != 0;
		}


		/**
		 * 获取uflag 员工性别了
		 * 
		 * @param uint8_t:cEmployeeSex
		 *  
		 * 
		 */
		 const uint8_t   GetEmployeeSexUFlag() const{
				 return  cEmployeeSex_u;
		}


		/**
		 * 设置 员工性别
		 * 
		 * @param uint8_t:cEmployeeSex
		 *  
		 * 
		 */
		 void  SetEmployeeSex( const uint8_t& sVal, uint8_t cUFlag=1){
				cEmployeeSex = sVal;
				cEmployeeSex_u = cUFlag;
		}


		/**
		 * 获取 员工性别
		 * 
		 * @return cEmployeeSex value 类型为:uint8_t
		 * 
		 */
		 const uint8_t&  GetEmployeeSex() const {
				return cEmployeeSex;
		}


		/**
		 * 是否设置 添加时间了
		 * 
		 * @param uint32_t:dwAddTime
		 *  
		 * 
		 */
		 bool  IsAddTimeSet() const{
				 return  cAddTime_u != 0;
		}


		/**
		 * 获取uflag 添加时间了
		 * 
		 * @param uint32_t:dwAddTime
		 *  
		 * 
		 */
		 const uint8_t   GetAddTimeUFlag() const{
				 return  cAddTime_u;
		}


		/**
		 * 设置 添加时间
		 * 
		 * @param uint32_t:dwAddTime
		 *  
		 * 
		 */
		 void  SetAddTime( const uint32_t& sVal, uint8_t cUFlag=1){
				dwAddTime = sVal;
				cAddTime_u = cUFlag;
		}


		/**
		 * 获取 添加时间
		 * 
		 * @return dwAddTime value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetAddTime() const {
				return dwAddTime;
		}


		/**
		 * 是否设置 修改时间了
		 * 
		 * @param uint32_t:dwLastUpdatetime
		 *  
		 * 
		 */
		 bool  IsLastUpdatetimeSet() const{
				 return  cLastUpdatetime_u != 0;
		}


		/**
		 * 获取uflag 修改时间了
		 * 
		 * @param uint32_t:dwLastUpdatetime
		 *  
		 * 
		 */
		 const uint8_t   GetLastUpdatetimeUFlag() const{
				 return  cLastUpdatetime_u;
		}


		/**
		 * 设置 修改时间
		 * 
		 * @param uint32_t:dwLastUpdatetime
		 *  
		 * 
		 */
		 void  SetLastUpdatetime( const uint32_t& sVal, uint8_t cUFlag=1){
				dwLastUpdatetime = sVal;
				cLastUpdatetime_u = cUFlag;
		}


		/**
		 * 获取 修改时间
		 * 
		 * @return dwLastUpdatetime value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetLastUpdatetime() const {
				return dwLastUpdatetime;
		}

		virtual bool Serialize(CByteStreamNetwork& bs){
		
			uint32_t dwMyLen = 0;
			if(bs.isStoring()) //for write in buffer
			{
				//can not larger than 1 M.
				CByteStreamNetwork bsDummy(NULL, 1024 * 1024, false);
				//bsDummy for precheck the xo size...
				bsDummy.isStoring(true);
				Serialize_i(bsDummy);
				dwMyLen = bsDummy.getWrittenLength();
				bs & dwMyLen;
				Serialize_i(bs);
			}
			else
			{    //for read from buffer
				bs & dwMyLen;
				uint32_t dwReadedLen = bs.getReadLength();
				Serialize_i(bs);
				dwReadedLen = bs.getReadLength() - dwReadedLen;
				// dwReadedLen for the size of xo
				if( dwReadedLen > dwMyLen ){
					return false;
				}
				//go through the unwanted mem position...
				bs.goForward( dwMyLen - dwReadedLen );
			}

			return bs.isGood();
		}

		bool Serialize_i(CByteStreamNetwork& bsTmp){

			bsTmp & dwVersion; // 序列化 版本号    类型为uint32_t
			bsTmp & cVersion_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwEmployeeId; // 序列化 员工ID  类型为uint32_t
			bsTmp & cEmployeeId_u; // 序列化uflag 类型为uint8_t
			bsTmp & strEmployeeName; // 序列化 员工姓名  类型为String
			bsTmp & cEmployeeName_u; // 序列化uflag 类型为uint8_t
			bsTmp & strEmployeeEnglishName; // 序列化 员工英文名  类型为String
			bsTmp & cEmployeeEnglishName_u; // 序列化uflag 类型为uint8_t
			bsTmp & wEmployeeStatus; // 序列化 员工状态 类型为uint16_t
			bsTmp & cEmployeeStatus_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetEmployeeProperty; // 序列化 员工属性   类型为BitSet
			bsTmp & cEmployeeProperty_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetEmployeePropertyInclude; // 序列化 员工属性，设置   类型为BitSet
			bsTmp & cEmployeePropertyInclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetEmployeePropertyExclude; // 序列化 员工属性，取消  类型为BitSet
			bsTmp & cEmployeePropertyExclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & wEmployeeType; // 序列化 员工类型 类型为uint16_t
			bsTmp & cEmployeeType_u; // 序列化uflag 类型为uint8_t
			bsTmp & cEmployeeSex; // 序列化 员工性别 类型为uint8_t
			bsTmp & cEmployeeSex_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwAddTime; // 序列化 添加时间 类型为uint32_t
			bsTmp & cAddTime_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwLastUpdatetime; // 序列化 修改时间 类型为uint32_t
			bsTmp & cLastUpdatetime_u; // 序列化uflag 类型为uint8_t
			return bsTmp.isGood();
		}

		const char* GetLastErrMsg() const{
			return m_sLastErrMsg.c_str();
		}

		bool VerifyEmployeePo(){

			if(!IsVersionSet()){
				m_sLastErrMsg = "Miss Param:version";
				return false;
			}

			if(!IsEmployeeIdSet()){
				m_sLastErrMsg = "Miss Param:employeeId";
				return false;
			}

			if(!IsEmployeeNameSet()){
				m_sLastErrMsg = "Miss Param:employeeName";
				return false;
			}

			if(!IsEmployeeEnglishNameSet()){
				m_sLastErrMsg = "Miss Param:employeeEnglishName";
				return false;
			}

			if(!IsEmployeeStatusSet()){
				m_sLastErrMsg = "Miss Param:employeeStatus";
				return false;
			}

			if(!IsEmployeePropertySet()){
				m_sLastErrMsg = "Miss Param:employeeProperty";
				return false;
			}

			if(!IsEmployeePropertyIncludeSet()){
				m_sLastErrMsg = "Miss Param:employeePropertyInclude";
				return false;
			}

			if(!IsEmployeePropertyExcludeSet()){
				m_sLastErrMsg = "Miss Param:employeePropertyExclude";
				return false;
			}

			if(!IsEmployeeTypeSet()){
				m_sLastErrMsg = "Miss Param:employeeType";
				return false;
			}

			if(!IsEmployeeSexSet()){
				m_sLastErrMsg = "Miss Param:employeeSex";
				return false;
			}

			if(!IsAddTimeSet()){
				m_sLastErrMsg = "Miss Param:addTime";
				return false;
			}

			if(!IsLastUpdatetimeSet()){
				m_sLastErrMsg = "Miss Param:lastUpdatetime";
				return false;
			}
			return true;
		}

		void DumpData(std::ostream& oss) const{
		
			oss<<"[dwVersion:"<<dwVersion<<"] ";
			oss<<"[cVersion_u:"<<(int)cVersion_u<<"] ";
			oss<<"[dwEmployeeId:"<<dwEmployeeId<<"] ";
			oss<<"[cEmployeeId_u:"<<(int)cEmployeeId_u<<"] ";
			oss<<"[strEmployeeName:"<<strEmployeeName<<"] ";
			oss<<"[cEmployeeName_u:"<<(int)cEmployeeName_u<<"] ";
			oss<<"[strEmployeeEnglishName:"<<strEmployeeEnglishName<<"] ";
			oss<<"[cEmployeeEnglishName_u:"<<(int)cEmployeeEnglishName_u<<"] ";
			oss<<"[wEmployeeStatus:"<<(int)wEmployeeStatus<<"] ";
			oss<<"[cEmployeeStatus_u:"<<(int)cEmployeeStatus_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cEmployeeProperty_u:"<<(int)cEmployeeProperty_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cEmployeePropertyInclude_u:"<<(int)cEmployeePropertyInclude_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cEmployeePropertyExclude_u:"<<(int)cEmployeePropertyExclude_u<<"] ";
			oss<<"[wEmployeeType:"<<(int)wEmployeeType<<"] ";
			oss<<"[cEmployeeType_u:"<<(int)cEmployeeType_u<<"] ";
			oss<<"[cEmployeeSex:"<<(int)cEmployeeSex<<"] ";
			oss<<"[cEmployeeSex_u:"<<(int)cEmployeeSex_u<<"] ";
			oss<<"[dwAddTime:"<<dwAddTime<<"] ";
			oss<<"[cAddTime_u:"<<(int)cAddTime_u<<"] ";
			oss<<"[dwLastUpdatetime:"<<dwLastUpdatetime<<"] ";
			oss<<"[cLastUpdatetime_u:"<<(int)cLastUpdatetime_u<<"] ";
		
		}

		// codydeng提供,非常好的dump方法 ^-^  。。。。。
		template<typename T>
		T & DumpPlusData(T& oss){
			oss<<"dwVersion:"<<dwVersion;
			oss<<"[cVersion_u:"<<cVersion_u<<"] ";
			oss<<"dwEmployeeId:"<<dwEmployeeId;
			oss<<"[cEmployeeId_u:"<<cEmployeeId_u<<"] ";
			oss<<"strEmployeeName:"<<strEmployeeName;
			oss<<"[cEmployeeName_u:"<<cEmployeeName_u<<"] ";
			oss<<"strEmployeeEnglishName:"<<strEmployeeEnglishName;
			oss<<"[cEmployeeEnglishName_u:"<<cEmployeeEnglishName_u<<"] ";
			oss<<"wEmployeeStatus:"<<wEmployeeStatus;
			oss<<"[cEmployeeStatus_u:"<<cEmployeeStatus_u<<"] ";
			oss<<"bitsetEmployeeProperty:"<<bitsetEmployeeProperty;
			oss<<"[cEmployeeProperty_u:"<<cEmployeeProperty_u<<"] ";
			oss<<"bitsetEmployeePropertyInclude:"<<bitsetEmployeePropertyInclude;
			oss<<"[cEmployeePropertyInclude_u:"<<cEmployeePropertyInclude_u<<"] ";
			oss<<"bitsetEmployeePropertyExclude:"<<bitsetEmployeePropertyExclude;
			oss<<"[cEmployeePropertyExclude_u:"<<cEmployeePropertyExclude_u<<"] ";
			oss<<"wEmployeeType:"<<wEmployeeType;
			oss<<"[cEmployeeType_u:"<<cEmployeeType_u<<"] ";
			oss<<"cEmployeeSex:"<<cEmployeeSex;
			oss<<"[cEmployeeSex_u:"<<cEmployeeSex_u<<"] ";
			oss<<"dwAddTime:"<<dwAddTime;
			oss<<"[cAddTime_u:"<<cAddTime_u<<"] ";
			oss<<"dwLastUpdatetime:"<<dwLastUpdatetime;
			oss<<"[cLastUpdatetime_u:"<<cLastUpdatetime_u<<"] ";
			return oss;
		}

		// wileywang提供,树形dump方法 ^-^  。。。。。
		void DumpDataTree(std::ostream& os, int ident = 0)const {
			g_pprint(os, "dwVersion", dwVersion, ident);
			g_pprint(os, "cVersion_u", cVersion_u, ident);
			g_pprint(os, "dwEmployeeId", dwEmployeeId, ident);
			g_pprint(os, "cEmployeeId_u", cEmployeeId_u, ident);
			g_pprint(os, "strEmployeeName", strEmployeeName, ident);
			g_pprint(os, "cEmployeeName_u", cEmployeeName_u, ident);
			g_pprint(os, "strEmployeeEnglishName", strEmployeeEnglishName, ident);
			g_pprint(os, "cEmployeeEnglishName_u", cEmployeeEnglishName_u, ident);
			g_pprint(os, "wEmployeeStatus", wEmployeeStatus, ident);
			g_pprint(os, "cEmployeeStatus_u", cEmployeeStatus_u, ident);
			g_pprint(os, "bitsetEmployeeProperty", bitsetEmployeeProperty, ident);
			g_pprint(os, "cEmployeeProperty_u", cEmployeeProperty_u, ident);
			g_pprint(os, "bitsetEmployeePropertyInclude", bitsetEmployeePropertyInclude, ident);
			g_pprint(os, "cEmployeePropertyInclude_u", cEmployeePropertyInclude_u, ident);
			g_pprint(os, "bitsetEmployeePropertyExclude", bitsetEmployeePropertyExclude, ident);
			g_pprint(os, "cEmployeePropertyExclude_u", cEmployeePropertyExclude_u, ident);
			g_pprint(os, "wEmployeeType", wEmployeeType, ident);
			g_pprint(os, "cEmployeeType_u", cEmployeeType_u, ident);
			g_pprint(os, "cEmployeeSex", cEmployeeSex, ident);
			g_pprint(os, "cEmployeeSex_u", cEmployeeSex_u, ident);
			g_pprint(os, "dwAddTime", dwAddTime, ident);
			g_pprint(os, "cAddTime_u", cAddTime_u, ident);
			g_pprint(os, "dwLastUpdatetime", dwLastUpdatetime, ident);
			g_pprint(os, "cLastUpdatetime_u", cLastUpdatetime_u, ident);
		}
		
		//提供ToString借口，默认为DumpData格式，请按需要进行修改
		std::string ToString() const{
			std::stringstream ss;
			DumpData(ss);
			return ss.str();
		}

/**
 ********************以下信息是每个版本的字段********************
 */

};

}
}
}

#endif /* ERP_EMPLOYEE_PO_CEMPLOYEEPO_BY_AUTOGEN_V5_H */
